這次的 side project 是要把 GU 價格追蹤/最低價通知 做成可用的小服務:能抓價 → 存歷史 → 視覺化 → 低價通知(LINE)。
今天先來擬定作法吧
痛點:GU 商品常週更價、活動價短暫,手動追價格很累、也容易錯過低價。且雖然現有網站也有查看的歷史價格的功能,但希望能有達設定價格的低價提醒。
目標:自動追蹤指定商品歷史,偵測新低或短期大幅下降就通知;同時提供一個極簡頁面看折線圖與最低價點。
量化成功條件
追蹤 ≥ 50 件商品、每日累積 ≥ 500 筆價格點。
正確偵測 最低價與 24h 降幅 ≥ X%(誤報率 < 5%)。
前端折線圖可選日期範圍,會標示最低價點。
這個專案要做的:
指定商品清單(product_code + URL)。
以排程每日多次抓價,寫入資料庫保留歷史。
兩種規則任一觸發就通知:
price <= threshold_price
24h drop >= Y%(含去抖動、冷卻)
一頁式折線圖(搜尋、時間範圍、最低價標記)。
Nice-to-have (如果未來有時間的話,再去雕細部)
[注!]不論抓頁面或 API,務必節流、重試與退避
product_code(唯一)、name、url、category
price(TWD)、ts(抓取時間戳)、source_url(溯源)
衍生:min_price、min_price_ts、last_price、price_count
資料庫的設計、有什麼其他欄位細節 本米也還沒完全想好 等做到那再寫上來
[ Scheduler (n8n / Cron / GitHub Actions) ]
|
v
[ Scraper (Python) ]
|
(append + upsert)
|
v
[ PostgreSQL: price_ticks, product_summary ]
|
+---------+----------+
| |
v v
[ Notifier: LINE ] [ Web API + Chart 前端 ]
單向資料流:抓 → 存 → 用,避免抓取與通知互相耦合。
規則:資料入庫後以 SQL/程式判斷 → 產出事件 → 通知。
本米現在是用 n8n + docker 來架設/自動化流程,視情況更動
請求頻率:設定合理間隔、加上節流與退避,尊重網站服務品質。
使用者資料:本專案不處理個資;通知僅對自己/團隊。